package com.netdisk.service;


import com.netdisk.dto.request.file.DeleteDTO;
import com.netdisk.dto.request.file.RenameDTO;
import com.netdisk.dto.request.file.UploadDTO;
import com.netdisk.dto.response.file.FileDTO;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;

import java.io.IOException;
import java.util.List;

public interface FileService {
    /**
     * 上传文件
     * @param uploadDTO
     * @return
     */
    FileDTO uploadFile(UploadDTO uploadDTO) throws IOException;

    /**
     * 删除文件
     * @param deleteDTO
     */
    void deleteFile(DeleteDTO deleteDTO);


    /**
     * 根据用户名获取文件总数
     * @param userId
     * @return
     */
    Integer getFileCountById(Integer userId);

    /**
     * 根据用户名获取文件列表
     * @param userId
     * @return
     */
    List<FileDTO> getFileListById(Integer userId);


    /**
     * 重命名文件
     * @param reNameDTO
     * @return
     */
    FileDTO renameFile(RenameDTO reNameDTO);

    /**
     * 下载文件
     * @param userId
     * @param fileId
     * @return
     */
    ResponseEntity<Resource> downloadFile(Integer userId, Integer fileId) throws Exception;
}
